#pragma once

class CWideningSink
{
public: 
	CWideningSink();
	virtual ~CWideningSink();
	virtual HRESULT StartWith(const struct XPOINTF * ptOffset) = 0;
	virtual HRESULT QuadTo(const struct XPOINTF * ptOffset, const struct XPOINTF & vecSeg, const struct XPOINTF & ptSpine, const struct XPOINTF & ptSpinePrev) = 0;
	virtual HRESULT QuadTo(const struct XPOINTF *) = 0;
	virtual HRESULT CurveWedge(enum _RAIL_SIDE side, const struct XPOINTF & ptBez_1, const struct XPOINTF & ptBez_2, const struct XPOINTF & ptBez_3) = 0;
	virtual HRESULT BezierCap(const struct XPOINTF & ptStart, const struct XPOINTF & pt0_1, const struct XPOINTF & pt0_2, const struct XPOINTF & ptMid, const struct XPOINTF & pt1_1, const struct XPOINTF & pt1_2, const struct XPOINTF & ptEnd) = 0;
	virtual HRESULT SetCurrentPoints(const struct XPOINTF * pPoints) = 0;
	virtual HRESULT DoInnerCorner(enum _RAIL_SIDE side, const struct XPOINTF & ptCenter, const struct XPOINTF * ptOffset) = 0;
	virtual HRESULT CapTriangle(const struct XPOINTF & ptStart, const struct XPOINTF & ptApex, const struct XPOINTF & ptEnd) = 0;
	virtual HRESULT CapFlat(const struct XPOINTF * __formal, enum _RAIL_SIDE __formal2) = 0;
	virtual HRESULT PolylineWedge(enum _RAIL_SIDE side, XUINT32 count, const struct XPOINTF * pPoints) = 0;
	virtual HRESULT AddFigure();
	virtual HRESULT SwitchSides() = 0;
	virtual XINT32 Aborted();
};